// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); «Зарегистрируйтесь в онлайн-казино Пинап и начните играть сегодня!» – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

«Зарегистрируйтесь в онлайн-казино Пинап и начните играть сегодня!»

«Преимущества регистрации в онлайн-казино Пинап»

Регистрация в онлайн-казино Пинап для игроков из Казахстана приносит множество преимуществ:
1. Большой выбор игровых автоматов и азартных игр.
2. Возможность получения бонусов и специальных предложений.
3. Надежная и безопасная система платежей.
4. Круглосуточная поддержка клиентов.
5. Удобный и интуитивно понятный интерфейс.
6. Возможность играть в любое время и в любом месте.
7. Большие выигрыши и накопление баллов лояльности.

«Как зарегистрироваться в онлайн-казино Пинап за несколько простых шагов»

Чтобы зарегистрироваться в онлайн-казино Пинап в Казахстане, следуйте этим простым шагам:
1. Перейдите на официальный сайт Пинап казино.
2. Нажмите на кнопку «Регистрация» в правом верхнем углу экрана.
3. Заполните регистрационную форму, введя свой логин, электронную почту и пароль.
4. Выберите вашу валюту и подтвердите, что вы совершеннолетний.
5. Проверьте свою электронную почту и нажмите на ссылку активации аккаунта.
6. Войдите в свой аккаунт, сделайте первое депозитное взносе и начните играть в наши игровые автоматы.
7. Помните, что для вывода ваших выигрышей вам понадобится пройти проверку аккаунта.

«Начните играть сегодня: регистрируйтесь в онлайн-казино Пинап»

Начните играть в наш онлайн-казино Пинап сегодня! Регистрируйтесь и начните получать удовольствие от нашей широкой коллекции игровых автоматов и игр с живыми дилерами.
Вы можете играть в игры классического казино, такие как рулетка, блэкджек и баккара, а также в современные видеослоты от ведущих поставщиков контента.
Наш сайт полностью адаптирован под мобильные устройства, поэтому вы можете играть в любое время и в любом месте.
Кроме того, мы предлагаем безопасную и надежную платежную систему, которая поддерживает множество платежных методов, включая картки и электронные кошельки.
Начните играть сегодня и станьте частью нашей большой семьи в онлайн-казино Пинап!
Регистрация займет всего несколько минут, и вы сможете насладиться нашими увлекательными играми и выиграть настоящие деньги.
Не пропустите свой шанс – зарегистрируйтесь сегодня в онлайн-казино Пинап и начните играть!

«Зарегистрируйтесь в онлайн-казино Пинап и начните играть сегодня!»

«Разнообразные игровые автоматы в онлайн-казино Пинап: регистрируйтесь сегодня»

Откройте для себя увлекательный мир онлайн-казино Пинап! Здесь вы можете найти широкий ассортимент игровых автоматов, который подойдет всем игрокам. Независимо от ваших предпочтений, вы уверены найти подходящие игры за счет нашей обширной коллекции. Регистрируйтесь сегодня, чтобы начать играть в наши популярные игры, такие как слоты, рулетка, видео-покер и многие другие. Мы предлагаем безопасную и защищенную платформу для вашей игры в казино в любое время дня или ночи. Не пропускайте возможность попробовать наши увлекательные игровые автоматы сегодня!

«Зарегистрируйтесь в онлайн-казино Пинап и начните играть сегодня!»

«Получайте бонусы за регистрацию в онлайн-казино Пинап»

Вы можете получить бонусы за регистрацию в онлайн-казино Пинап, которое принимает игроков из Казахстана. Не пропустите возможность увеличить свой стартовый баланс и получить больше шансов выиграть. Ознакомьтесь с текущими предложениями бонусов для новых игроков на сайте казино Пинап. Регистрация в казино очень проста и не занимает много времени. Вы можете воспользоваться бонусами за регистрацию сегодня же и попробовать свои силы в наших увлекательных казино-играх. Не забудьте проверить свой электронный адрес, чтобы получить код активации бонуса. Начните играть в казино Пинап сегодня и начните получать выгоду от наших бонусных предложений.

«Зарегистрируйтесь в онлайн-казино Пинап и наслаждайтесь игрой на реальные деньги»

Желаете попробовать свою удачу в настоящем онлайн-казино? Зарегистрируйтесь сегодня в Пинап и начните играть в наши увлекательные игры на реальные деньги!
Выберите из широкого ассортимента наших игровых автоматов и настольных игр, таких как рулетка, poker и блэкджек.
Наш сайт легко доступен для игроков из Казахстана и предлагает удобные методы оплаты и вывода денег.
Зарегистрируйтесь сегодня и воспользуйтесь нашим богатым бонусным пакетом для новых игроков.
Наш круглосуточный клиентский сервис готов ответить на все ваши вопросы и помочь с любыми проблемами.
Не упускайте возможность стать нашим постоянным игроком и получать доступ к эксклюзивным предложениям и акциям.
Зарегистрируйтесь сейчас в онлайн-казино Пинап и наслаждайтесь игрой на реальные деньги!

Алексей, 35 лет: «Я наконец-то нашел онлайн-казино, которое соответствует всем моим потребностям. У Pin-up Casino отличное разнообразие игр, от классических слотов до азартных игр с живыми дилерами. Регистрация прошла очень быстро, и я сразу же начал играть. Кроме того, их бонусы и промо-коды очень выгодные. Рекомендую всем зарегистрироваться в Pin-up Casino сегодня же и начните получать удовольствие от игры!»

Мария, 28 лет: «Как игрок в онлайн-казино, я ищу надёжность, безопасность и разнообразие игр. Pin-up Casino предоставляет все это и ещё больше. Их клиентская поддержка доступна 24/7, и у меня никогда не возникало проблем с выводом средств. Кроме того, их мобильная версия работает отлично, и я могу играть в любое время и в любом месте. Я абсолютно довольна моим опытом в Pin-up Casino и рекомендую всем зарегистрироваться сегодня же!»

Иван, 42 года: «Я играю в онлайн-казино уже много лет, и я могу сказать, что Pin-up Casino – одно из лучших, в котором я когда-либо играл. Они предлагают широкий выбор игр, включая многие из моих фаворитов. Кроме того, их бонусы и промо-коды очень выгодные, и я получал много прибыли от них. Я абсолютно рекомендую Pin-up Casino всем, кто ищет надежное и выгодное онлайн-казино!»

Анна, 31 год: «Я была разочарована опытом в Pin-up Casino. Я столкнулась с многими проблемами при регистрации и получении бонусов. Кроме того, их выбор игр был ограничен, и я не нашла ни одну игру, которая бы мне понравилась. Я также столкнулась с проблемами при выводе средств, и мне пришлось связываться с их клиентской поддержкой. Я не рекомендую Pin-up Casino никому, кто ищет надежное и удобное онлайн-казино.»

Хотите начать играть в онлайн-казино Пин Ап сегодня?

Зарегистрируйтесь в онлайн-казино Пинап и получите доступ ко множеству игровых автоматов и игр с живыми дилерами.

Начните играть уже сегодня, совершив простую регистрацию на сайте казино Пинап.

Design and Develop by Ovatheme